package github.sf.fw.tools.db;


import github.sf.fw.tools.db.model.DataBaseInfo;
import github.sf.fw.tools.db.model.TableInfo;

import java.util.List;

/**
 * 数据库信息
 */
public interface DataSourceMeta {
    /**
     * 库信息
     *
     * @return 数据库中所有库信息
     */
    List<DataBaseInfo> getDBList();

    /**
     * 获取指定数据库中的所有表格</br>
     * NOTE:返回的表格中不含列信息
     *
     * @param schema 数据库名
     */
    DataBaseInfo getTableList(String schema);


    /**
     * 加载整个库中所有表的列信息</br>
     * NOTE: {@code DataBaseInfo}中要包含表格信息
     */
    void loadColumnInfo(DataBaseInfo dataBaseInfo);

    /**
     * 加载表的所有列信息</br>
     * NOTE: {@code TableInfo}中要包含表格名称和数据库名称
     */
    void loadColumnInfo(TableInfo tableInfo);

    void close();

    boolean checkTable(String tableName);


    default void setDbFilter(QueryFilter<String> dbFilter) {
    }

}
